home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / MUI / DEFTII15.LHA / Deft II / Sources / PrefsFile.em < prev    next >
Encoding:
Text File  |  1994-11-06  |  3.8 KB  |  174 lines

  1. OPT MODULE
  2.  
  3.  
  4. ->*****
  5. ->** External modules
  6. ->*****
  7. MODULE 'libraries/mui'
  8. MODULE 'tools/boopsi'
  9. MODULE 'utility/tagitem'
  10.  
  11. MODULE '*Locale'
  12. MODULE '*Defs'
  13. MODULE '*GUI_MUIB'
  14. MODULE '*Errors'
  15.  
  16.  
  17. ->*****
  18. ->** Error handling
  19. ->*****
  20. RAISE    "MEM"    IF    ParsePatternNoCase()    =    -1
  21.  
  22.  
  23. ->*****
  24. ->** Global variables
  25. ->*****
  26. EXPORT DEF deftII    :    PTR TO obj_app
  27. EXPORT DEF cat        :    PTR TO catalog_DeftII
  28. EXPORT DEF modified    :    LONG
  29.  
  30.  
  31. /*****************************************************************/
  32. /* The given string pointer is modified to point the next string */
  33. /*****************************************************************/
  34. PROC next_string( string_ptr_ptr : PTR TO LONG )
  35.  
  36.     ^string_ptr_ptr := ^string_ptr_ptr + StrLen( ^string_ptr_ptr ) + 1
  37.  
  38. ENDPROC
  39.  
  40.  
  41. /******************************/
  42. /* Loads the preferences file */
  43. /******************************/
  44. EXPORT PROC load_prefs()
  45.  
  46.     DEF prefs_file , prefs_file_length , prefs_file_adr
  47.     DEF string_ptr : PTR TO CHAR
  48.     DEF def_tool : PTR TO default_tool
  49.     DEF pattern_length
  50.  
  51.     prefs_file := Open( 'PROGDIR:Deft II.prefs' , OLDFILE )
  52.  
  53.     IF prefs_file <> NIL
  54.  
  55.         prefs_file_length := FileLength( 'PROGDIR:Deft II.prefs' )
  56.         prefs_file_adr := NewR( prefs_file_length )
  57.         Read( prefs_file , prefs_file_adr , prefs_file_length )
  58.         string_ptr := prefs_file_adr
  59.  
  60.         IF StrCmp( string_ptr , 'DeftII_save_format_v1.0' )
  61.  
  62.             next_string( {string_ptr} )
  63.  
  64.             domethod( deftII.app , [ MUIM_MultiSet , MUIA_List_Quiet , MUI_TRUE ,
  65.                     deftII.lv_paths , deftII.lv_default_tools , NIL ] )
  66.  
  67.             WHILE Char( string_ptr ) <> 0
  68.  
  69.                 domethod( deftII.lv_paths , [ MUIM_List_InsertSingle , string_ptr , MUIV_List_Insert_Sorted ] )
  70.                 next_string( {string_ptr} )
  71.  
  72.             ENDWHILE
  73.  
  74.             INC string_ptr
  75.  
  76.             WHILE Char( string_ptr ) <> 0
  77.  
  78.                 NEW def_tool
  79.  
  80.                 def_tool.old := String( StrLen( string_ptr ) )
  81.                 StrCopy( def_tool.old , string_ptr , ALL )
  82.  
  83.                 def_tool.old_raw := String ( StrLen( string_ptr ) + 2 )
  84.                 StringF( def_tool.old_raw , '\ei\s' , string_ptr )
  85.  
  86.                 def_tool.pattern := FastNew( pattern_length := StrLen( def_tool.old ) * 2 + 2 )
  87.                 IF ParsePatternNoCase( def_tool.old , def_tool.pattern , pattern_length ) = 0 THEN def_tool.pattern := NIL
  88.  
  89.                 next_string( {string_ptr} )
  90.  
  91.                 def_tool.new := String( StrLen( string_ptr ) )
  92.                 StrCopy( def_tool.new , string_ptr , ALL )
  93.  
  94.                 domethod( deftII.lv_default_tools , [ MUIM_List_InsertSingle , def_tool , MUIV_List_Insert_Sorted ] )
  95.  
  96.                 next_string( {string_ptr} )
  97.  
  98.             ENDWHILE
  99.  
  100.             domethod( deftII.app , [ MUIM_MultiSet , MUIA_List_Quiet , FALSE ,
  101.                     deftII.lv_default_tools , deftII.lv_paths , NIL ] )
  102.  
  103.         ELSE
  104.  
  105.             deftII_error( cat.msg_Wrong_Prefs_File.getstr() )
  106.  
  107.         ENDIF
  108.  
  109.         Dispose( prefs_file_adr )
  110.         Close( prefs_file )
  111.  
  112.     ELSE
  113.  
  114.         deftII_error( cat.msg_Missing_Prefs_File.getstr() )
  115.  
  116.     ENDIF
  117.  
  118.     modified := FALSE
  119.  
  120. ENDPROC
  121.  
  122.  
  123. /******************************/
  124. /* Saves the preferences file */
  125. /******************************/
  126. EXPORT PROC save_prefs( error_messages )
  127.  
  128.     DEF error_buf[ 81 ] : ARRAY OF CHAR , prefs_file
  129.     DEF path_str : PTR TO CHAR
  130.     DEF def_tool : PTR TO default_tool
  131.     DEF i = 0 , return = 0
  132.  
  133.     prefs_file := Open( 'PROGDIR:Deft II.prefs' , NEWFILE )
  134.  
  135.     IF prefs_file <> NIL
  136.  
  137.         Fputs( prefs_file , 'DeftII_save_format_v1.0' ) ; FputC( prefs_file , 0 )
  138.  
  139.         REPEAT
  140.  
  141.             domethod( deftII.lv_paths , [ MUIM_List_GetEntry , i++ , {path_str} ] )
  142.             IF path_str <> NIL THEN Fputs( prefs_file , path_str )
  143.             FputC( prefs_file , 0 )
  144.  
  145.         UNTIL path_str = NIL
  146.  
  147.         i := 0
  148.  
  149.         REPEAT
  150.  
  151.             domethod( deftII.lv_default_tools , [ MUIM_List_GetEntry , i++ , {def_tool} ] )
  152.             IF def_tool <> NIL
  153.  
  154.                 Fputs( prefs_file , def_tool.old ) ; FputC( prefs_file , 0 )
  155.                 Fputs( prefs_file , def_tool.new )
  156.  
  157.             ENDIF
  158.             FputC( prefs_file , 0 )
  159.  
  160.         UNTIL def_tool = NIL
  161.  
  162.         Close( prefs_file )
  163.         modified := FALSE
  164.  
  165.     ELSE
  166.  
  167.         Fault( IoErr() , NIL , error_buf , 80 )
  168.         IF error_messages THEN deftII_error( error_buf )
  169.         return := 50
  170.  
  171.     ENDIF
  172.  
  173. ENDPROC return
  174.